package com.penghaisoft.microwms.base.web.data.controller;

import com.penghaisoft.microwms.base.web.data.service.IMdRegionService;
import com.penghaisoft.microwms.common.controller.BaseController;
import com.penghaisoft.microwms.common.data.model.MdRegion;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.dto.TransResult;
import com.penghaisoft.microwms.common.page.Pager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @Description 区域 维护
 * @author luoteng
 * @date 2017年5月24日 下午4:12:38
 * @version 1.0
 */
@RestController
@RequestMapping(value = "/region")
public class MdRegionController extends BaseController {

	@Autowired
	private IMdRegionService mdRegionService;

	/**
	 * @Title create
	 * @Description 新增记录
	 * @author luoteng
	 * @date 2017年5月24日 下午4:12:50
	 * @param mdRegion
	 * @return TransResult
	 */
	@PostMapping("c")
	public TransResult create(MdRegion mdRegion) {
		mdRegion.preInsert();
		mdRegion.setFactoryCode(getCurrentFactoryCode());
		mdRegion.setCreateBy(getLoginName());
		mdRegion.setGmtCreate(new Date());
		Resp resp = mdRegionService.create(mdRegion);
		return fromResp(resp);
	}

	/**
	 * @Title delete
	 * @Description 删除记录（逻辑删除active_flag=0)
	 * @author luoteng
	 * @date 2017年5月24日 下午4:12:59
	 * @param mdRegion
	 * @return TransResult
	 */
	@PostMapping("d")
	public TransResult delete(MdRegion mdRegion) {
		mdRegion.preUpdate();
		mdRegion.setLastModifiedBy(getLoginName());
		Resp resp = mdRegionService.delete(mdRegion);
		return fromResp(resp);
	}

	/**
	 * @Title list
	 * @Description 查询列表
	 * @author luoteng
	 * @date 2017年5月24日 下午4:13:08
	 * @param page
	 * @param rows
	 * @param mdRegion
	 * @return TransResult
	 */
	@PostMapping("list")
	public TransResult list(
			@RequestParam(name = "page", defaultValue = "1") int page,
			@RequestParam(name = "rows", defaultValue = "10") int rows,
			MdRegion mdRegion) {
		mdRegion.setFactoryCode(getCurrentFactoryCode());
		Pager<MdRegion> result = mdRegionService.findListByCondition(page,
				rows, mdRegion);
		return success(result);
	}

	/**
	 * @Title queryById
	 * @Description 查询单条
	 * @author luoteng
	 * @date 2017年5月24日 下午4:13:18
	 * @param id
	 * @return TransResult
	 */
	@GetMapping("r/{id}")
	public TransResult queryById(@PathVariable String id) {
		MdRegion mdRegion = mdRegionService.findById(id);
		return success(mdRegion);
	}

	/**
	 * @Title update
	 * @Description 修改记录
	 * @author luoteng
	 * @date 2017年5月24日 下午4:13:25
	 * @param mdRegion
	 * @return TransResult
	 */
	@PostMapping("u")
	public TransResult update(MdRegion mdRegion) {
		mdRegion.preUpdate();
		mdRegion.setLastModifiedBy(getLoginName());
		Resp resp = mdRegionService.update(mdRegion);
		return fromResp(resp);
	}

	/**
	 * @Title queryMdRegionAll
	 * @Description 查询所有有效的区域信息（区域编码、区域描述） --下拉框用
	 * @author luoteng
	 * @date 2017年5月24日 下午4:13:37
	 * @return TransResult
	 */
	@GetMapping("all")
	public TransResult queryMdRegionAll() {
		List<MdRegion> mdRegionList = mdRegionService.queryMdRegionAll();
		return success(mdRegionList);
	}

	/**
	 * @Title queryRegionsUnderWareHouse
	 * @Description 查询仓库下的区域
	 * @author zhangx
	 * @date 2017年5月24日 下午4:14:16
	 * @param whCode 仓库编码
	 * @return TransResult
	 */
	@PostMapping("r/{whCode}/region")
	public TransResult queryRegionsUnderWareHouse(
			@PathVariable(required = true) String whCode) {
		MdRegion condition = new MdRegion();
		if ("all".equals(whCode)) {
			condition.setWhCode(null);
		} else {
			condition.setWhCode(whCode);
		}
		List<MdRegion> mdRegionList = mdRegionService
				.queryRegionsUnderWareHouse(condition);
		return success(mdRegionList);
	}
	
	@PostMapping("r/{whCode}/fromToRegion")
	public TransResult queryFromToRegions(@PathVariable(required = true) String whCode) {
		MdRegion condition = new MdRegion();

		condition.setFactoryCode(getCurrentFactoryCode());
		
		List<MdRegion> mdRegionList = mdRegionService
				.queryFromToRegions(condition);
		return success(mdRegionList);
	}
	
	/** 
	 * @Title queryFactory
	 * @Description 调拨获取目的工厂
	 * @author luoteng
	 * @date 2017年11月3日:下午4:08:47
	 * @return TransResult
	 */
	@PostMapping("r/des/factory")
	public TransResult queryFactory() {
		String factoryCode = getCurrentFactoryCode();
		List<MdRegion> rtList = new ArrayList<MdRegion>();
		MdRegion mdRegion = new MdRegion();
		if(factoryCode.charAt(0) == '1'){
			mdRegion.setProductFactoryCode(factoryCode);
			rtList = mdRegionService.queryFactory(mdRegion);
		}else{
			mdRegion.setFactoryCode(factoryCode);
			rtList = mdRegionService.queryFactory1(mdRegion);
		}
		return success(rtList);
	}
	
	/** 
	 * @Title queryFactoryAll
	 * @Description 查询当前工厂相关的内裤、外库工厂
	 * @author luoteng
	 * @date 2017年11月7日:下午1:16:43
	 * @return TransResult
	 */
	@PostMapping("r/factory/all")
	public TransResult queryFactoryAll() {
		String factoryCode = getCurrentFactoryCode();
		MdRegion mdRegion = new MdRegion();
		mdRegion.setFactoryCode(factoryCode);
		List<MdRegion> rtList = mdRegionService.queryFactoryAll(mdRegion);
		return success(rtList);
	}

}
